package com.hyyt.shopjsp.product.service;

import com.hyyt.shopjsp.product.pojo.ShopSpecification;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @author 刘超 on 2017/8/6.
 */
public interface IShopSpecificationService {

    /**
     * 保存SHOP_商品规格
     *
     * @param shopSpecification SHOP_商品规格
     * @return 保存后的SHOP_商品规格
     */
    void saveShopSpecification (ShopSpecification shopSpecification);

    /**
     * 更新SHOP_商品规格
     *
     * @param shopSpecification SHOP_商品规格
     * @return 更新后的SHOP_商品规格
     */
    void updateShopSpecification (ShopSpecification shopSpecification);

    /**
     * 删除指定ID的SHOP_商品规格
     *
     * @param id SHOP_商品规格ID
     */
    void deleteShopSpecification(Integer id);

    /**
     * 删除指定ID集合的SHOP_商品规格
     *
     * @param ids SHOP_商品规格ID集合
     */
    void deleteShopSpecification(Collection<Integer> ids);

    /**
     * 根据ID加载一个SHOP_商品规格
     *
     * @param id SHOP_商品规格ID
     * @return SHOP_商品规格
     */
    ShopSpecification loadShopSpecification(Integer id);

    /**
     * 查询所有的SHOP_商品规格，通常有最多取30000条记录的限制
     *
     * @return 所有的SHOP_商品规格，通常有最多取30000条记录的限制
     */
    List<ShopSpecification> queryAllShopSpecification();

    /**
     * 查询SHOP_商品规格
     *
     * @param params 查询参数，为key-value形式
     * @return SHOP_商品规格集合
     */
    List<ShopSpecification> queryShopSpecification(Map<String, Object> params);

    /**
     * 查询SHOP_商品规格
     *
     * @param params   查询参数，没有则传null,分页参数key为“sortColumns”
     * @param startRow 起始行数（不含起始行的数据）
     * @param rowSize  要查询记录数
     * @return SHOP_商品规格集合
     */
    List<ShopSpecification> queryShopSpecification(Map<String, Object> params, int startRow, int rowSize);

    /**
     * 根据商品分类ID，查询SHOP_商品规格
     *
     * @param params   查询参数，没有则传null,分页参数key为“sortColumns”
     * @param startRow 起始行数（不含起始行的数据）
     * @param rowSize  要查询记录数
     * @return SHOP_商品规格集合
     */
     List<Map<String,Object>> queryShopSpecificationByProductTypeId(Map<String, Object> params, int startRow, int rowSize);

    /**
     * 统计SHOP_商品规格
     *
     * @param params 查询参数，没有则传null,分页参数key为“sortColumns”
     * @return 结果集记录数
     */
    int countShopSpecification(Map<String, Object> params);

}
